package day_4.demo1;/*
 *@ 代阳敲的专属代码
 **/

public class Test {
    public static void main(String[] args) {
        Animal animal1 = new Dog();
        Animal animal2 = new Cat();
        animal1.eat();
        animal2.eat();
        //animal1.bark();
//        ((Dog)animal1).bark();
//        ((Dog)animal1).eat();
//        System.out.println(animal1.name);
//        System.out.println(animal2.name);
    }

}
// class PolyDetail02 {
//    public static void main(String[] args) {
////属性没有重写之说！属性的值看编译类型
//        Base base = new Sub();//向上转型
//        System.out.println(base.count);// ？ 看编译类型 10
//        Sub sub = new Sub();
//        System.out.println(sub.count);//? 20
//    }
//}
//class Base { //父类
//    int count = 10;//属性
//}
//class Sub extends Base {//子类
//    int count = 20;//属性
//}
//class PolyDetail03 {
//    public static void main(String[] args) {
//        BB bb = new BB();
//        System.out.println(bb instanceof BB);// true
//        System.out.println(bb instanceof AA);// true
////aa 编译类型 AA, 运行类型是 BB
////BB 是 AA 子类
//        AA aa = new BB();
//        System.out.println(aa instanceof AA);
//        System.out.println(aa instanceof BB);
//        Object obj = new Object();
//        System.out.println(obj instanceof AA);//false
//        String str = "hello";
////System.out.println(str instanceof AA);
//        System.out.println(str instanceof Object);//true
//    }
//}
//class AA {} //父类
//class BB extends AA {}//子类
// class DynamicBinding {
//    public static void main(String[] args) {
////a 的编译类型 A, 运行类型 B
//        A a = new B();//向上转型
//        System.out.println(a.sum());//?40 -> 30
//        System.out.println(a.sum1());//?30-> 20
//    }
//}
//class A {//父类
//    public int i = 10;
//    //动态绑定机制:
//    public int sum() {//父类 sum()
//        return getI() + 10;//20 + 10
//    }
//    public int sum1() {//父类 sum1()
//        return i + 10;//10 + 10
//    }
//    public int getI() {//父类 getI
//        return i;
//    }
//}
//class B extends A {//子类
//    public int i = 20;
//    // public int sum() {
//// return i + 20;
//// }
//    public int getI() {//子类 getI()
//        return i;
//    }
//// public int sum1() {
//// return i + 10;
//// }
//}